#!/bin/bash
# 参数 1 为原目录不能为空 参数 2 为目标不能空 参数 3 push 同步到服务器  pull 同步到本地
function rsync_sdk(){
   if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then
          echo "参数 1 为原目录不能为空 参数 2 为目标不能空 参数 3 push 同步到服务器  pull 同步到本地"
         return 1
   fi
  # 检查 rsync 是否已经安装了
  if ! command -v rsync &> /dev/null; then
      echo "rsync 未安装"
      apt-get update
      apt-get install rsync -y
  fi

  # rsync 服务密码
  export RSYNC_PASSWORD="1813033378"

# 检查参数的值 推送文件到服务器  从服务器同步到本地
if [ "$3" = "push" ]; then
     # rsync 服务器地址
     RSYNCSERVER=rsync://admin@192.168.2.252:87/rsync_server/$2/
       rsync -az \
       --inplace --info=progress2 --checksum --delete \
       --delete-excluded --timeout=60 \
       --exclude="*.log" \
       --exclude="*.tmp" \
       $1/ ${RSYNCSERVER}
    # 从服务器同步到本地
elif [ "$3" = "pull" ]; then
      # rsync 服务器地址
      RSYNCSERVER=rsync://admin@192.168.2.252:87/rsync_server/$2/
        rsync -az \
        --inplace --info=progress2 --checksum --delete \
        --delete-excluded --timeout=60 \
        --exclude="*.log" \
        --exclude="*.tmp" \
        ${RSYNCSERVER} $1/
else
    echo "$3 参数错误 参数 $3 push 同步到服务器  pull 同步到本地"
    return 1
fi
if [ $? -eq 0 ]; then
    echo "同步 $2 成功"
    return 0
else
    echo "同步 $2 失败"
 return 1
fi

}

# 同步 仓库
function JetBrains(){
  # 判断 $SDK_HOME 是否为空
  if [ -z $SDK_HOME ]; then
    echo " SDK_HOME 变量为空"
  return 1
  fi
  # 判断目录是否存在 如果不存在就创建然后同步服务器的仓库
  if [ ! -d ${SDK_HOME}/JetBrains ]; then
    mkdir -p ${SDK_HOME}/JetBrains
    echo "从服务器同步到本地 JetBrains 同步到本地"
    rsync_sdk ${SDK_HOME}/JetBrains JetBrains pull
    else
      echo "同步仓库到服务器 JetBrains "
      # 同步仓库到服务器
      rsync_sdk ${SDK_HOME}/JetBrains JetBrains push
  fi


}
# 同步 仓库
function gradle_repo(){
  # 判断 $GRADLE_USER_HOME 是否为空
  if [ -z $GRADLE_USER_HOME ]; then
    echo " SDK_HOME 变量为空"
  return 1
  fi
  # 判断目录是否存在 如果不存在就创建然后同步服务器的仓库
  if [ ! -d ${GRADLE_USER_HOME} ]; then
    mkdir -p ${GRADLE_USER_HOME}
    echo "从服务器同步到本地 gradle_repo 同步到本地"
    rsync_sdk $GRADLE_USER_HOME gradle_repo pull
    else
      echo "同步仓库到服务器 gradle_repo 同步到服务器"
      # 同步仓库到服务器
      rsync_sdk $GRADLE_USER_HOME gradle_repo push
  fi
}
# 下载 gradle
function download_gradle(){
      # 判断 $SDK_HOME 是否为空
      if [ -z "$SDK_HOME" ]; then
         echo " SDK_HOME 变量为空"
         return 1
      fi
      # 检查是否已经安装了gradle
      if command -v gradle &> /dev/null; then
          echo "gradle 已经安装"
          return 0
      fi
      echo "gradle 未安装，开始安装..."
      # 检查是否已经安装了wget
      if ! command -v wget &> /dev/null; then
          echo "wget 安装"
          apt-get update
          apt-get install -y wget
      fi
       # 判断gradle 目录是否存在
      if [ -d "${SDK_HOME}/gradle-8.8" ]; then
          echo "gradle-8.8 目录存在删除"
          rm -rf ${SDK_HOME}/gradle-8.8
      fi
      wget -O ${SDK_HOME}/gradle-8.8-bin.zip http://192.168.2.252:5244/d/gradle-bin/gradle-8.8-bin.zip?sign=2od3UDfgkTYYbN7e3jAsTGeSB1RmLW6L0dKIvnvgw1Y=:0
      # 判断下载是否成功
       if [ $? -ne 0 ]; then
           echo "本地服务器下载失败 正在尝试官网下载"
            wget -O ${SDK_HOME}/gradle-8.8-bin.zip https://services.gradle.org/distributions/gradle-8.8-bin.zip
            if [ $? -ne 0 ]; then
                echo "gradle 下载失败"
                return 1
            fi

        fi

       echo "下载成功 正在解压"
       apt-get update
       apt-get install -y unzip
       unzip ${SDK_HOME}/gradle-8.8-bin.zip -d ${SDK_HOME}/
       rm -rf ${SDK_HOME}/gradle-8.8-bin.zip

}

# 下载 jdk
function download_jdk() {
      # 判断 $SDK_HOME 是否为空
      if [ -z "$SDK_HOME" ]; then
         echo " SDK_HOME 变量为空"
         return 1
      fi
      # 检查是否已经安装了Java
      if command -v java &> /dev/null; then
          echo "Java 已经安装"
          return 0
      fi
          echo "Java 未安装，开始安装..."
          # 检查是否已经安装了wget
      if ! command -v wget &> /dev/null; then
          echo "wget 安装"
          apt-get update
          apt-get install -y wget
      fi
      # 判断java 目录是否存在
      if [ -d "${SDK_HOME}/jdk-21.0.5" ]; then
          echo "jdk-21.0.5 目录存在删除"
          rm -rf $SDK_HOME/jdk-21.0.5
      fi
      wget -O $SDK_HOME/openjdk-21_linux-x64_bin.tar.gz http://192.168.2.252:5244/d/nas/cache/sdk/jdk-21_linux-x64_bin.tar.gz?sign=F1-Muss4U8iTrgsvHcDjD8c4wsMR3UmnZgRE1IIP6Kc=:0
      # 判断下载是否成功
     if [ $? -ne 0 ]; then
         echo "本地服务器下载失败 正在尝试官网下载"
          wget -O $SDK_HOME/openjdk-21_linux-x64_bin.tar.gz https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
          if [ $? -ne 0 ]; then
              echo "sdk 下载失败"
              return 1
          fi

      fi

      echo "下载成功 正在解压"
      tar -zxvf $SDK_HOME/openjdk-21_linux-x64_bin.tar.gz -C $SDK_HOME/
      rm -rf $SDK_HOME/openjdk-21_linux-x64_bin.tar.gz
      echo "安装成功"
      java -version

      return 0
}

# 配置 sdk 环境变量 参数 $1 sdk 主目录
function config_sdk(){
  # 判断 $1 是否为空
  if [ -z "$1" ]; then
     echo "请输入 sdk 主目录"
     exit 1
  fi
# 设置环境变量
cat >/etc/profile.d/sdk.sh << EOF
#!/bin/bash
#sdk 主目录
export SDK_HOME=$1
# java 目录
export JAVA_HOME=\$SDK_HOME/jdk-21.0.5
# jar
export JRE_HOME=\$JAVA_HOME/jre
# CLASSPATH
export CLASSPATH=\$JAVA_HOME/lib:\$JRE_HOME/lib:\$CLASSPATH

# gradle 目录
export GRADLE_USER_HOME=\$SDK_HOME/gradle_repo
export GRADLE_HOME=\$SDK_HOME/gradle-8.8
# ffmpeg 目录
export FFmpeg_HOME=\$SDK_HOME/ffmpeg
# java 库
export LD_LIBRARY_PATH=\$JAVA_HOME/lib:\$FFmpeg_HOME/lib
# PATH
export PATH=\$PATH:\$JAVA_HOME/bin:\$FFmpeg_HOME/bin:\$GRADLE_HOME/bin

EOF

}